Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3.docx
Скачиваний:
5
Добавлен:
18.02.2023
Размер:
69.9 Кб
Скачать

Ход работы:

Разработаем приложения в соответствии со следующей моделью классов:

  1. Скопируйте папку с проектом из предыдущей работы и переименуйте проект.

  2. Примените инкапсуляцию к классу Employee. Для этого:

  • замените модификаторы доступа полей с public на private

  • замените конструктор без параметров на конструктор с параметрами

public Employee(int empId, String name, String ssn, double salary){

this.empId = empId;

this.name = name;

this.ssn = ssn;

this.salary = salary;

}

  • уберите все методы записи данных в поля («сеттеры»), кроме метода setName

  • добавьте метод увеличения зарплаты raiseSalary:

public void raiseSalary(double increase){

if (increase>0){

salary += increase;

}

}

  1. Создайте в том же пакете подкласс класса Employee и назовите его Manager:

public class Manager extends Employee {

}

  1. Добавьте в него поле deptName

private String deptName;

  1. Добавьте конструктор класса с параметрами, который вызывает конструктор родительского класса и инициирует значение поля deptName:

public Manager(int empId, String name, String ssn, double salary, String deptName) {

super(empId, name, ssn, salary); this.deptName = deptName;

}

  1. Добавьте в него метод чтения данных из поля getDeptName:

public String getDeptName() {

return deptName;

}

  1. Создайте в том же пакете подкласс класса Employee и назовите его Admin. Запишите в него конструктор с параметрами:

public class Admin extends Employee {

public Admin(int empId, String name, String ssn, double salary){

super(empId, name, ssn, salary);

}

}

  1. Создайте в том же пакете подкласс класса Employee и назовите его Engineer. Запишите в него конструктор с параметрами:

public class Engineer extends Employee {

public Engineer(int empId, String name, String ssn, double salary){

super(empId, name, ssn, salary);

}

}

  1. Создайте в том же пакете подкласс класса Manager и назовите его Director:

public class Director extends Manager {

}

  1. Добавьте в него поле budget:

private double budget;

  1. Добавьте конструктор класса с параметрами, который вызывает конструктор родительского класса и инициирует значение поля budget:

public Director(int empId, String name, String ssn, double salary, String deptName, double budget) {

super(empId, name, ssn, salary, deptName); this.budget = budget;

}

  1. Добавьте в него метод чтения данных из поля budget:

public double getBudget() {

return budget;

}

  1. Сохраните все классы

  2. Добавьте в процедуру main класса EmployeeTest команды импорта созданных классов

import com.example.domain.Admin;

import com.example.domain.Director;

import com.example.domain.Engineer;

import com.example.domain.Manager;

  1. Запишите в процедуру main класса EmployeeTest команды создания объектов созданных классов и заполнение их полей

Engineer eng = new Engineer(101, "Jane Smith", "012-34-5678", 120_345.27);

Manager mgr = new Manager(207, "Barbara Johnson", "054-12-2367", 109_501.36, "US Marketing");

Admin adm = new Admin(304, "Bill Munroe", "108-23-2367", 75_002.34);

Director dir = new Director(12, "Susan Wheeler", "099-45-2340", 120_567.36, "Global Marketing", 1_000_000.00);

  1. Добавьте в класс EmployeeTest статический метод отображения данных объекта, представленного по ссылке класса Employee, родительского для всех вновь созданных классов

private static void printEmployee(Employee emp) { System.out.println("Employee ID: " + emp.getEmpId()); System.out.println("Employee Name: " + emp.getName()); System.out.println("Employee Soc Sec # " + emp.getSsn()); System.out.println("Employee salary: " + emp.getSalary());

}

  1. Добавьте в класс EmployeeTest команды отображения данных созданных объектов

printEmployee(eng);

printEmployee(mgr);

printEmployee(adm);

printEmployee(dir);

  1. Сохраните все классы и запустите приложение.